# 网络请求模块
import requests
# html 解析模块
from lxml import etree # 解析html
import json, os  # json模块  os模块
from tqdm import tqdm # 进度条

'''
去虎牙下载美女照片
'''
main_url = (
    "https://live.huya.com/liveHttpUI/getLiveList?iGid=4079&iPageNo=1&iPageSize=120"
)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0",
}
# 请求主页
def request_index(url):
    # 请求主页，使用定义好的头信息来伪装
    result = requests.get(url=url, headers=headers) #  发送请求  返回一个响应对象result
    # 判断请求是否成功

    if result.status_code == 200:  # 200表示正常请求
        with open("huya.json", "w", encoding="utf-8") as f:
            json.dump(result.json(), f, indent="  ", ensure_ascii=False) # 将json数据写入文件
# 解析数据            
def parse_data():
    if not os.path.exists("./huya.json"): # 如果文件不存在
        request_index(main_url)
    with open("huya.json", "r", encoding="utf-8") as f:
        data = json.load(f)["vList"]  # 读取json文件 获取vList的值
        if data: # 如果data存在
            urls = [{x["sNick"]: x["sScreenshot"]} for x in data] # 获取sNick和sScreenshot的值
            return download(data=urls) # 调用download函数
# 下载图片
def download(data):
    if not os.path.exists("./image"): # 如果文件不存在
        os.mkdir("./image") 
    with tqdm(total=len(data)) as pbar: # 进度条  进度条的长度是data的长度 也就是图片的数量
        for i in data:  # 遍历data
            # i是一个字典  k是sNick v是sScreenshot
            for k, v in i.items():  # 遍历字典
                pbar.set_description(k)  # 设置进度条的描述  图片的名字
                re = requests.get(v, headers=headers)# 请求图片 返回一个响应对象
                with open(f"./image/{k}.jpg", "wb") as f:
                    f.write(re.content)  # 写入图片
                pbar.update(1) 

parse_data() # 调用函数